<?php

/**
 * Controlador de la parte de plantillas.
 * Los parametros se le han de pasar por GET
 *
 * @author Israel Mora e Ismael Garcia
 */

include_once (realpath(dirname(__FILE__)) . '/../modelos/template.class.php');
include_once (realpath(dirname(__FILE__)) . '/../modelos/doc.class.php');
include_once (realpath(dirname(__FILE__)) . '/../modelos/plantilla.class.php');

$control = new control_template();


class control_template {

    private $_action;
    private $_template;
    private $_doc;
    private $_capa;
    private $_asign;

    public function __construct($capa = 'principal') {
        $this->_capa = $capa;
        $this->_action = isset($_GET["action"]) ? $_GET["action"] : 'list';
        $this->_template = new Template();
        $this->_doc = new Doc();
        $this->_asign = new Plantilla();

        switch ($this->_action) {
            case 'list' : $this->listTemplate();        break;
            case 'show' : $this->showTemplate();        break;
            case 'edit' : $this->editTemplate();        break;
            case 'new' : $this->newTemplate();          break;
            case 'insert' : $this->insertTemplate();    break;
            case 'update' : $this->updateTemplate();    break;
            case 'delete' : $this->deleteTemplate();    break;
            case 'download': $this->downloadTemplate(); break;
            default : $this->listTemplate();
        }
    }
    /**
     * Llama a la vista “template_manager.php” y la llena con los datos de todas 
     * las plantillas disponibles en la base de datos.
     */
    public function listTemplate() {
        $capa = $this->_capa;
        $files = $this->_template->listRecords();

        $new = 'controladores/control_template.class.php?action=new';
        $show = 'controladores/control_template.class.php?action=show';
        $edit = 'controladores/control_template.class.php?action=edit';
        $delete = 'controladores/control_template.class.php?action=delete';
        $download = 'controladores/control_template.class.php?action=download';
        $asign = 'controladores/control_asign_templ.class.php?action=list';
        include '../vistas/template_manager.php';
    }

    /**
     * Llama a la vista “show_template.php” cogiendo por GET el parámetro “id” como 
     * la id de la plantilla a visualizar en la vista.
     * @param Int $_GET['id'] id plantilla
     */
    public function showTemplate() {
        $capa = $this->_capa;
        if (isset($_GET["id"]) && $_GET["id"] != "") {
            $fila = $this->_template->getRecord($_GET["id"]);
            $script = 'controladores/control_template.class.php?action=list';
            include (realpath(dirname(__FILE__)) . '/../vistas/show_template.php');
        }
    }

    /**
     * Llama a la vista “template_editor.php” cogiendo por GET el parámetro “id” 
     * como la id de la plantilla que queremos editar en el editor.
     * @param Int $_GET['id'] id plantilla
     */
    public function editTemplate() {
        $capa = $this->_capa;
        if (isset($_GET["id"]) && $_GET["id"] != "") {
            $fila = $this->_template->getRecord($_GET["id"]);
            $action = $this->_action;
            $script = 'controladores/control_template.class.php?action=update&id=' . $_GET["id"];
            include (realpath(dirname(__FILE__)) . '/../vistas/template_editor.php');
                    
        }
    }
    
    /**
     * Llama a la vista “template_editor.php” como un editor en blanco para 
     * crear una plantilla desde cero.
     */
    public function newTemplate() {
        $capa = $this->_capa;
        $fila = $this->_template->listRecords();
        $action = $this->_action;
        $script = 'controladores/control_template.class.php?&action=insert';
        include (realpath(dirname(__FILE__)) . '/../vistas/template_editor.php');
    }

    /**
     * Junto a la acción update, hay que pasarle por GET el id de la plantilla 
     * a actualizar, como parámetro “id”. El controlador envía los datos recogidos 
     * por POST al modelo de datos encargado de introducir los cambios en el 
     * registro correspondiente de la base de datos.
     * @param Int $_GET['id'] id plantilla
     */
    public function updateTemplate() {
        if (isset($_GET["id"]))
            $_POST["id"] = $_GET["id"];
        $this->_template->updateRecord($_POST);
        $this->listTemplate();
    }

     /**
     * Se encarga de ordenar al modelo de datos correspondiente, la plantilla con el id especificado.
     * El id se le pasa por GET con el identificador “id”.
     * @param Int $_GET['id'] id plantilla
     */
    public function deleteTemplate() {
        $where = "id_document='" . $_GET["id"] . "'";
        $eliminar = $this->_asign->listRecords($where);
            foreach($eliminar as $elim){
                $this->_asign->deleteRecord($elim["id"]);
            }
        if (isset($_GET["id"]))
            $this->_template->deleteRecord($_GET["id"]);
        $this->listTemplate();
    }

    /**
     * Recoge por POST los datos de la nueva plantilla y los manda al modelo de 
     * datos para que los inserte en la base de datos.
     */
    public function insertTemplate() {
        $doc["titol"] = $_POST["titol"];
        //$this->_doc->insertRecord($doc);
        $rs = mysql_query("SELECT @@identity AS id");
        if ($row = mysql_fetch_row($rs)) {
            $id_document = trim($row[0]);
        }
        echo($id_document);
        $template["titol"] = $_POST["titol"];
        $template["id_document"] = $id_document;
        $template["plantilla"] = $_POST["plantilla"];
        $this->_template->insertRecord($template);
        $this->listTemplate();
    }

    public function downloadTemplate() {
        $this->_template->getFile($this->_template->getRecord($_GET["id"]));
    }

}

?>
